#include<iostream>
using namespace std;
#include<string>
/*
C++类中的成员可以是另一个类的对象，称该成员为对象成员
class A{};
class B{
    A a;
};
B类中有对象A作为成员，A为对象成员
那么当创建B对象时，A与B的构造和析构的顺序是谁先谁后
*/
class Phone
{
public:
    Phone(string pName)
    {
        m_PName=pName;
        cout<<"phone构造函数调用"<<endl;
    }
    ~Phone()
    {
        cout<<"phone析构函数调用"<<endl;
    }
    string m_PName;

};
class Person
{
public:
    //Phone m_Phone = pName 隐式转换法
    Person(string name,string pName):m_Name(name),m_Phone(pName)
    {
        cout<<"person构造函数调用"<<endl;
    }
    ~Person()
    {
        cout<<"person的析构函数调用"<<endl;
    }
    string m_Name;
    Phone m_Phone;
};
//当其他类对象作为本类成员，构造的时候先构造类对象，再构造自身，析构的顺序与构造相反
void test01()
{
    Person p("张三","苹果MAX");
    cout<<p.m_Name<<"拿着"<<p.m_Phone.m_PName<<endl;
}
int main()
{
    test01();
}